home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 2
/
AACD 2.iso
/
AACD
/
Magazine
/
GraphicsCards
/
StormMesa
/
src
/
fog.s
< prev
next >
Wrap
Text File
|
1999-02-04
|
24KB
|
1,324 lines
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/fog.c
mc68030
mc68881
XREF _gl_error
XREF _gl_problem
XREF _exp__r
XREF _CC
SECTION "_gl_Fogfv:0",CODE
;void gl_Fogfv( GLcontext *ctx, GLenum pname, const GLfloat *params )
XDEF _gl_Fogfv
_gl_Fogfv
move.l a2,-(a7)
movem.l $C(a7),d0/a1
move.l $8(a7),a0
L76
; switch (pname)
sub.l #$B61,d0
cmp.l #5,d0
bhi L91
move.l L93(pc,d0.l*4),a2
jmp (a2)
L93
dc.l L89
dc.l L83
dc.l L87
dc.l L88
dc.l L77
dc.l L90
;
L77
; m = (GLenum) (GLint) *params;
fmove.s (a1),fp0
fmove.l fp0,d0
; if (m==GL_LINEAR || m==GL_EXP || m==GL_EXP2)
cmp.l #$2601,d0
beq.b L80
L78
cmp.l #$800,d0
beq.b L80
L79
cmp.l #$801,d0
bne.b L81
L80
; ctx->Fog.Mode = m;
move.l d0,$2300(a0)
bra L92
L81
; gl_error( ctx, GL_INVALID_ENUM, "glFog" );
move.l #L75,-(a7)
pea $500.w
move.l a0,-(a7)
jsr _gl_error
add.w #$C,a7
L82
;
bra L92
L83
; if (*params<0.0)
fmove.s (a1),fp0
fcmp.d #$.00000000.00000000,fp0
fboge.b L85
L84
; gl_error( ctx, GL_INVALID_VALUE, "glFog" );
move.l #L75,-(a7)
pea $501.w
move.l a0,-(a7)
jsr _gl_error
add.w #$C,a7
bra.b L92
L85
; ctx->Fog.Density = *params;
move.l (a1),$22F0(a0)
L86
;
bra.b L92
L87
; ctx->Fog.Start = *params;
move.l (a1),$22F4(a0)
;
bra.b L92
L88
; ctx->Fog.End = *params;
move.l (a1),$22F8(a0)
;
bra.b L92
L89
; ctx->Fog.Index = *params;
move.l (a1),$22FC(a0)
;
bra.b L92
L90
; ctx->Fog.Color[0] = params[0];
move.l (a1),$22E0(a0)
; ctx->Fog.Color[1] = params[1];
lea $22E0(a0),a2
move.l 4(a1),4(a2)
; ctx->Fog.Color[2] = params[2];
lea $22E0(a0),a2
move.l $8(a1),$8(a2)
; ctx->Fog.Color[3] = params[3];
lea $22E0(a0),a0
move.l $C(a1),$C(a0)
;
bra.b L92
L91
; gl_error( ctx, GL_INVALID_ENUM, "glFog" );
move.l #L75,-(a7)
pea $500.w
move.l a0,-(a7)
jsr _gl_error
add.w #$C,a7
L92
move.l (a7)+,a2
rts
L75
dc.b 'glFog',0
SECTION "_gl_fog_rgba_vertices:0",CODE
rts
;void gl_fog_rgba_vertices( const GLcontext *ctx,
XDEF _gl_fog_rgba_vertices
_gl_fog_rgba_vertices
L137 EQU -$28
link a5,#L137
movem.l d2/d3/a2/a3,-(a7)
fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
movem.l $C(a5),d3/a3
move.l $8(a5),a0
move.l $14(a5),a2
L95
; GLfloat rFog = ctx->Fog.Color[0] * 255.0F;
fmove.s $22E0(a0),fp0
fmul.s #$.437F0000,fp0
fmove.s fp0,fp7
; GLfloat gFog = ctx->Fog.Color[1] * 255.0F;
lea $22E0(a0),a1
fmove.s 4(a1),fp5
fmul.s #$.437F0000,fp5
; GLfloat bFog = ctx->Fog.Color[2] * 255.0F;
lea $22E0(a0),a1
fmove.s $8(a1),fp4
fmul.s #$.437F0000,fp4
; GLfloat end = ctx->Fog.End;
move.l $22F8(a0),-$18(a5)
; switch (ctx->Fog.Mode)
move.l $2300(a0),d0
cmp.l #$801,d0
beq L122
bgt.b L138
cmp.l #$800,d0
beq L109
bra L135
L138
cmp.l #$2601,d0
beq.b L96
bra L135
;
L96
; d = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
fmove.s $22F8(a0),fp0
fsub.s $22F4(a0),fp0
fmove.s #$.3F800000,fp2
fdiv.x fp0,fp2
; for (i=0;
moveq #0,d2
bra L107
L97
; GLfloat f = (end - ABSF(v[i][2])) * d;
move.l d2,d0
asl.l #4,d0
lea 0(a3,d0.l),a0
fmove.s $8(a0),fp0
fcmp.s #$.00000000,fp0
fboge.b L99
L98
move.l d2,d0
asl.l #4,d0
lea 0(a3,d0.l),a0
fmove.s $8(a0),fp0
fneg.s fp0
bra.b L100
L99
move.l d2,d0
asl.l #4,d0
lea 0(a3,d0.l),a0
fmove.s $8(a0),fp0
L100
fmove.s -$18(a5),fp1
fsub.x fp0,fp1
fmove.x fp1,fp0
fmul.x fp2,fp0
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L102
L101
fmove.s #$.00000000,fp0
bra.b L106
L102
fcmp.s #$.3F800000,fp0
fbole.b L104
L103
fmove.s #$.3F800000,fp0
L104
L105
L106
; color[i][0] = (GLint) (f * color[i][0] + (1.
moveq #0,d0
move.b 0(a2,d2.l*4),d0
fmove.l d0,fp1
fmul.x fp0,fp1
fmove.s #$.3F800000,fp3
fsub.x fp0,fp3
fmul.x fp7,fp3
fadd.x fp3,fp1
fmove.l fp1,d0
move.b d0,0(a2,d2.l*4)
; color[i][1] = (GLint) (f * color[i][1] + (1.
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 1(a0),d0
fmove.l d0,fp1
fmul.x fp0,fp1
fmove.s #$.3F800000,fp3
fsub.x fp0,fp3
fmul.x fp5,fp3
fadd.x fp3,fp1
fmove.l fp1,d0
lea 0(a2,d2.l*4),a0
move.b d0,1(a0)
; color[i][2] = (GLint) (f * color[i][2] + (1.
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 2(a0),d0
fmove.l d0,fp1
fmul.x fp0,fp1
fmove.s #$.3F800000,fp3
fsub.x fp0,fp3
fmove.x fp3,fp0
fmul.x fp4,fp0
fadd.x fp0,fp1
fmove.l fp1,d0
lea 0(a2,d2.l*4),a0
move.b d0,2(a0)
addq.l #1,d2
L107
cmp.l d3,d2
blo L97
L108
;
bra L136
L109
; d = -ctx->Fog.Density;
fmove.s $22F0(a0),fp2
fneg.s fp2
; for (i=0;
moveq #0,d2
bra L120
L110
; GLfloat f = exp( d * ABSF(v[i][2]) );
move.l d2,d0
asl.l #4,d0
lea 0(a3,d0.l),a0
fmove.s $8(a0),fp0
fcmp.s #$.00000000,fp0
fboge.b L112
L111
move.l d2,d0
asl.l #4,d0
lea 0(a3,d0.l),a0
fmove.s $8(a0),fp0
fneg.s fp0
bra.b L113
L112
move.l d2,d0
asl.l #4,d0
lea 0(a3,d0.l),a0
fmove.s $8(a0),fp0
L113
fmul.x fp2,fp0
fmove.d fp0,-(a7)
jsr _exp__r
addq.w #$8,a7
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L115
L114
fmove.s #$.00000000,fp0
bra.b L119
L115
fcmp.s #$.3F800000,fp0
fbole.b L117
L116
fmove.s #$.3F800000,fp0
L117
L118
L119
; color[i][0] = (GLint) (f * color[i][0] + (1.
moveq #0,d0
move.b 0(a2,d2.l*4),d0
fmove.l d0,fp1
fmul.x fp0,fp1
fmove.s #$.3F800000,fp3
fsub.x fp0,fp3
fmul.x fp7,fp3
fadd.x fp3,fp1
fmove.l fp1,d0
move.b d0,0(a2,d2.l*4)
; color[i][1] = (GLint) (f * color[i][1] + (1.
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 1(a0),d0
fmove.l d0,fp1
fmul.x fp0,fp1
fmove.s #$.3F800000,fp3
fsub.x fp0,fp3
fmul.x fp5,fp3
fadd.x fp3,fp1
fmove.l fp1,d0
lea 0(a2,d2.l*4),a0
move.b d0,1(a0)
; color[i][2] = (GLint) (f * color[i][2] + (1.
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 2(a0),d0
fmove.l d0,fp1
fmul.x fp0,fp1
fmove.s #$.3F800000,fp3
fsub.x fp0,fp3
fmove.x fp3,fp0
fmul.x fp4,fp0
fadd.x fp0,fp1
fmove.l fp1,d0
lea 0(a2,d2.l*4),a0
move.b d0,2(a0)
addq.l #1,d2
L120
cmp.l d3,d2
blo L110
L121
;
bra L136
L122
; d = -(ctx->Fog.Density*ctx->Fog.Density);
fmove.s $22F0(a0),fp2
fmul.s $22F0(a0),fp2
fneg.s fp2
; for (i=0;
moveq #0,d2
bra L133
L123
; GLfloat z = ABSF(v[i][2]);
move.l d2,d0
asl.l #4,d0
lea 0(a3,d0.l),a0
fmove.s $8(a0),fp0
fcmp.s #$.00000000,fp0
fboge.b L125
L124
move.l d2,d0
asl.l #4,d0
lea 0(a3,d0.l),a0
fmove.s $8(a0),fp0
fneg.s fp0
bra.b L126
L125
move.l d2,d0
asl.l #4,d0
lea 0(a3,d0.l),a0
fmove.s $8(a0),fp0
L126
; GLfloat f = exp( d * z*z );
fmove.x fp2,fp1
fmul.x fp0,fp1
fmul.x fp0,fp1
fmove.x fp1,fp0
fmove.d fp0,-(a7)
jsr _exp__r
addq.w #$8,a7
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L128
L127
fmove.s #$.00000000,fp0
bra.b L132
L128
fcmp.s #$.3F800000,fp0
fbole.b L130
L129
fmove.s #$.3F800000,fp0
L130
L131
L132
; color[i][0] = (GLint) (f * color[i][0] + (1.
moveq #0,d0
move.b 0(a2,d2.l*4),d0
fmove.l d0,fp1
fmul.x fp0,fp1
fmove.s #$.3F800000,fp3
fsub.x fp0,fp3
fmul.x fp7,fp3
fadd.x fp3,fp1
fmove.l fp1,d0
move.b d0,0(a2,d2.l*4)
; color[i][1] = (GLint) (f * color[i][1] + (1.
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 1(a0),d0
fmove.l d0,fp1
fmul.x fp0,fp1
fmove.s #$.3F800000,fp3
fsub.x fp0,fp3
fmul.x fp5,fp3
fadd.x fp3,fp1
fmove.l fp1,d0
lea 0(a2,d2.l*4),a0
move.b d0,1(a0)
; color[i][2] = (GLint) (f * color[i][2] + (1.
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 2(a0),d0
fmove.l d0,fp1
fmul.x fp0,fp1
fmove.s #$.3F800000,fp3
fsub.x fp0,fp3
fmove.x fp3,fp0
fmul.x fp4,fp0
fadd.x fp0,fp1
fmove.l fp1,d0
lea 0(a2,d2.l*4),a0
move.b d0,2(a0)
addq.l #1,d2
L133
cmp.l d3,d2
blo L123
L134
;
bra.b L136
L135
; gl_problem(ctx, "Bad fog mode in gl_fog_rgba_verti
move.l #L94,-(a7)
move.l a0,-(a7)
jsr _gl_problem
addq.w #$8,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
movem.l (a7)+,d2/d3/a2/a3
unlk a5
rts
L136
; return;
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
movem.l (a7)+,d2/d3/a2/a3
unlk a5
rts
L94
dc.b 'Bad fog mode in gl_fog_rgba_vertices',0
SECTION "_gl_fog_ci_vertices:0",CODE
; GLfloat fogEnd = ctx->Fog.End;
XDEF _gl_fog_ci_vertices
_gl_fog_ci_vertices
movem.l d2/d3/a2/a3,-(a7)
fmovem.x fp2/fp3/fp4/fp5,-(a7)
movem.l $48(a7),d3/a2/a3
move.l $44(a7),a0
L140
; switch (ctx->Fog.Mode)
move.l $2300(a0),d0
cmp.l #$801,d0
beq L167
bgt.b L182
cmp.l #$800,d0
beq L154
bra L180
L182
cmp.l #$2601,d0
beq.b L141
bra L180
;
L141
; GLfloat d = 1.0F / (ctx->Fog.End - ctx->Fog.
fmove.s $22F8(a0),fp0
fsub.s $22F4(a0),fp0
fmove.s #$.3F800000,fp4
fdiv.x fp0,fp4
; GLfloat fogindex = ctx->Fog.Index;
fmove.s $22FC(a0),fp3
; GLfloat fogend = ctx->Fog.End;
fmove.s $22F8(a0),fp2
; for (i=0;
moveq #0,d0
bra L152
L142
; GLfloat f = (fogend - ABSF(v[i][2])) *
move.l d0,d1
asl.l #4,d1
lea 0(a2,d1.l),a0
fmove.s $8(a0),fp0
fcmp.s #$.00000000,fp0
fboge.b L144
L143
move.l d0,d1
asl.l #4,d1
lea 0(a2,d1.l),a0
fmove.s $8(a0),fp0
fneg.s fp0
bra.b L145
L144
move.l d0,d1
asl.l #4,d1
lea 0(a2,d1.l),a0
fmove.s $8(a0),fp0
L145
fmove.x fp2,fp1
fsub.x fp0,fp1
fmove.x fp1,fp0
fmul.x fp4,fp0
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L147
L146
fmove.s #$.00000000,fp0
bra.b L151
L147
fcmp.s #$.3F800000,fp0
fbole.b L149
L148
fmove.s #$.3F800000,fp0
L149
L150
L151
; indx[i] = (GLint)
fmove.l 0(a3,d0.l*4),fp1
fmove.s #$.3F800000,fp5
fsub.x fp0,fp5
fmove.x fp5,fp0
fmul.x fp3,fp0
fadd.x fp0,fp1
fmove.l fp1,d1
move.l d1,0(a3,d0.l*4)
addq.l #1,d0
L152
cmp.l d3,d0
blo L142
L153
;
bra L181
L154
; GLfloat d = -ctx->Fog.Density;
fmove.s $22F0(a0),fp2
fneg.s fp2
; GLfloat fogindex = ctx->Fog.Index;
fmove.s $22FC(a0),fp3
; for (i=0;
moveq #0,d2
bra L165
L155
; GLfloat f = exp( d * ABSF(v[i][2]) );
move.l d2,d0
asl.l #4,d0
lea 0(a2,d0.l),a0
fmove.s $8(a0),fp0
fcmp.s #$.00000000,fp0
fboge.b L157
L156
move.l d2,d0
asl.l #4,d0
lea 0(a2,d0.l),a0
fmove.s $8(a0),fp0
fneg.s fp0
bra.b L158
L157
move.l d2,d0
asl.l #4,d0
lea 0(a2,d0.l),a0
fmove.s $8(a0),fp0
L158
fmul.x fp2,fp0
fmove.d fp0,-(a7)
jsr _exp__r
addq.w #$8,a7
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L160
L159
fmove.s #$.00000000,fp0
bra.b L164
L160
fcmp.s #$.3F800000,fp0
fbole.b L162
L161
fmove.s #$.3F800000,fp0
L162
L163
L164
; indx[i] = (GLint)
fmove.l 0(a3,d2.l*4),fp1
fmove.s #$.3F800000,fp4
fsub.x fp0,fp4
fmove.x fp4,fp0
fmul.x fp3,fp0
fadd.x fp0,fp1
fmove.l fp1,d0
move.l d0,0(a3,d2.l*4)
addq.l #1,d2
L165
cmp.l d3,d2
blo L155
L166
;
bra L181
L167
; GLfloat d = -(ctx->Fog.Density*ctx->Fog.Dens
fmove.s $22F0(a0),fp2
fmul.s $22F0(a0),fp2
fneg.s fp2
; GLfloat fogindex = ctx->Fog.Index;
fmove.s $22FC(a0),fp3
; for (i=0;
moveq #0,d2
bra L178
L168
; GLfloat z = ABSF(v[i][2]);
move.l d2,d0
asl.l #4,d0
lea 0(a2,d0.l),a0
fmove.s $8(a0),fp0
fcmp.s #$.00000000,fp0
fboge.b L170
L169
move.l d2,d0
asl.l #4,d0
lea 0(a2,d0.l),a0
fmove.s $8(a0),fp1
fneg.s fp1
bra.b L171
L170
move.l d2,d0
asl.l #4,d0
lea 0(a2,d0.l),a0
fmove.s $8(a0),fp1
L171
; GLfloat f = exp( -d * z*z );
fmove.x fp2,fp0
fneg.s fp0
fmul.x fp1,fp0
fmul.x fp1,fp0
fmove.d fp0,-(a7)
jsr _exp__r
addq.w #$8,a7
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L173
L172
fmove.s #$.00000000,fp0
bra.b L177
L173
fcmp.s #$.3F800000,fp0
fbole.b L175
L174
fmove.s #$.3F800000,fp0
L175
L176
L177
; indx[i] = (GLint)
fmove.l 0(a3,d2.l*4),fp1
fmove.s #$.3F800000,fp4
fsub.x fp0,fp4
fmove.x fp4,fp0
fmul.x fp3,fp0
fadd.x fp0,fp1
fmove.l fp1,d0
move.l d0,0(a3,d2.l*4)
addq.l #1,d2
L178
cmp.l d3,d2
blo L168
L179
;
bra.b L181
L180
; gl_problem(ctx, "Bad fog mode in gl_fog_ci_vertice
move.l #L139,-(a7)
move.l a0,-(a7)
jsr _gl_problem
addq.w #$8,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5
movem.l (a7)+,d2/d3/a2/a3
rts
L181
; return;
fmovem.x (a7)+,fp2/fp3/fp4/fp5
movem.l (a7)+,d2/d3/a2/a3
rts
L139
dc.b 'Bad fog mode in gl_fog_ci_vertices',0
SECTION "_gl_fog_rgba_pixels:0",CODE
;void gl_fog_rgba_pixels( const GLcontext *ctx,
XDEF _gl_fog_rgba_pixels
_gl_fog_rgba_pixels
L223 EQU -$70
link a5,#L223
movem.l d2/d3/a2-a4,-(a7)
fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
movem.l $C(a5),d3/a4
move.l $14(a5),a2
move.l $8(a5),a3
L184
; GLfloat c = ctx->ProjectionMatrix[10];
lea $1284(a3),a0
move.l $28(a0),-4(a5)
; GLfloat d = ctx->ProjectionMatrix[14];
lea $1284(a3),a0
move.l $38(a0),-$8(a5)
; GLfloat rFog = ctx->Fog.Color[0] * 255.0F;
fmove.s $22E0(a3),fp5
fmul.s #$.437F0000,fp5
; GLfloat gFog = ctx->Fog.Color[1] * 255.0F;
lea $22E0(a3),a0
fmove.s 4(a0),fp4
fmul.s #$.437F0000,fp4
; GLfloat bFog = ctx->Fog.Color[2] * 255.0F;
lea $22E0(a3),a0
fmove.s $8(a0),fp3
fmul.s #$.437F0000,fp3
; GLfloat tz = ctx->Viewport.Tz;
move.l a3,a0
add.l #$E540,a0
move.l $2C(a0),-$1C(a5)
; GLfloat szInv = 1.0F / ctx->Viewport.Sz;
move.l a3,a0
add.l #$E540,a0
fmove.s #$.3F800000,fp0
fdiv.s $20(a0),fp0
fmove.s fp0,-$20(a5)
; switch (ctx->Fog.Mode)
move.l $2300(a3),d0
cmp.l #$801,d0
beq L209
bgt.b L224
cmp.l #$800,d0
beq L197
bra L221
L224
cmp.l #$2601,d0
beq.b L185
bra L221
;
L185
; GLfloat fogEnd = ctx->Fog.End;
move.l $22F8(a3),-$24(a5)
; GLfloat fogScale = 1.0F / (ctx->Fog.End - ct
fmove.s $22F8(a3),fp0
fsub.s $22F4(a3),fp0
fmove.s #$.3F800000,fp1
fdiv.x fp0,fp1
fmove.s fp1,-$28(a5)
; for (i=0;
moveq #0,d2
bra L195
L186
; GLfloat ndcz = ((GLfloat) z[i] - tz) *
moveq #0,d0
move.w 0(a4,d2.l*2),d0
fmove.l d0,fp1
fsub.s -$1C(a5),fp1
fmul.s -$20(a5),fp1
; GLfloat eyez = -d / (c+ndcz);
fmove.s -$8(a5),fp0
fneg.s fp0
fadd.s -4(a5),fp1
fdiv.x fp1,fp0
; if (eyez < 0.0)
fmove.x fp0,fp1
fcmp.d #$.00000000.00000000,fp1
fboge.b L188
L187
; if (eyez < 0.0) eyez
fneg.s fp0
L188
; f = (fogEnd - eyez) * fogScale;
fmove.s -$24(a5),fp1
fsub.x fp0,fp1
fmove.x fp1,fp0
fmul.s -$28(a5),fp0
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L190
L189
fmove.s #$.00000000,fp0
bra.b L194
L190
fcmp.s #$.3F800000,fp0
fbole.b L192
L191
fmove.s #$.3F800000,fp0
L192
L193
L194
; g = 1.0F - f;
fmove.s #$.3F800000,fp1
fsub.x fp0,fp1
; rgba[i][RCOMP] = (GLint) (f * rgba[i][
moveq #0,d0
move.b 0(a2,d2.l*4),d0
fmove.l d0,fp2
fmul.x fp0,fp2
fmove.x fp1,fp6
fmul.x fp5,fp6
fadd.x fp6,fp2
fmove.l fp2,d0
move.b d0,0(a2,d2.l*4)
; rgba[i][GCOMP] = (GLint) (f * rgba[i][
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 1(a0),d0
fmove.l d0,fp2
fmul.x fp0,fp2
fmove.x fp1,fp6
fmul.x fp4,fp6
fadd.x fp6,fp2
fmove.l fp2,d0
lea 0(a2,d2.l*4),a0
move.b d0,1(a0)
; rgba[i][BCOMP] = (GLint) (f * rgba[i][
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 2(a0),d0
fmove.l d0,fp2
fmul.x fp2,fp0
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.l fp0,d0
lea 0(a2,d2.l*4),a0
move.b d0,2(a0)
addq.l #1,d2
L195
cmp.l d3,d2
blo L186
L196
;
bra L222
L197
; for (i=0;
moveq #0,d2
bra L207
L198
; GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
moveq #0,d0
move.w 0(a4,d2.l*2),d0
fmove.l d0,fp1
fsub.s -$1C(a5),fp1
fmul.s -$20(a5),fp1
; GLfloat eyez = -d / (c+ndcz);
fmove.s -$8(a5),fp0
fneg.s fp0
fadd.s -4(a5),fp1
fdiv.x fp1,fp0
; if (eyez < 0.0)
fmove.x fp0,fp1
fcmp.d #$.00000000.00000000,fp1
fboge.b L200
L199
; if (eyez < 0.0) eyez = -ey
fneg.s fp0
L200
; f = exp( -ctx->Fog.Density * eyez );
fmove.s $22F0(a3),fp1
fneg.s fp1
fmul.x fp0,fp1
fmove.x fp1,fp0
fmove.d fp0,-(a7)
jsr _exp__r
addq.w #$8,a7
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L202
L201
fmove.s #$.00000000,fp0
bra.b L206
L202
fcmp.s #$.3F800000,fp0
fbole.b L204
L203
fmove.s #$.3F800000,fp0
L204
L205
L206
; g = 1.0F - f;
fmove.s #$.3F800000,fp1
fsub.x fp0,fp1
; rgba[i][RCOMP] = (GLint) (f * rgba[i][RCOMP]
moveq #0,d0
move.b 0(a2,d2.l*4),d0
fmove.l d0,fp2
fmul.x fp0,fp2
fmove.x fp1,fp6
fmul.x fp5,fp6
fadd.x fp6,fp2
fmove.l fp2,d0
move.b d0,0(a2,d2.l*4)
; rgba[i][GCOMP] = (GLint) (f * rgba[i][GCOMP]
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 1(a0),d0
fmove.l d0,fp2
fmul.x fp0,fp2
fmove.x fp1,fp6
fmul.x fp4,fp6
fadd.x fp6,fp2
fmove.l fp2,d0
lea 0(a2,d2.l*4),a0
move.b d0,1(a0)
; rgba[i][BCOMP] = (GLint) (f * rgba[i][BCOMP]
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 2(a0),d0
fmove.l d0,fp2
fmul.x fp2,fp0
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.l fp0,d0
lea 0(a2,d2.l*4),a0
move.b d0,2(a0)
addq.l #1,d2
L207
cmp.l d3,d2
blo L198
L208
;
bra L222
L209
; GLfloat negDensitySquared = -ctx->Fog.Densit
move.l $22F0(a3),-$3C(a5)
fmove.s -$3C(a5),fp0
fneg.s fp0
fmove.s fp0,-$3C(a5)
fmove.s -$3C(a5),fp0
fmul.s $22F0(a3),fp0
fmove.s fp0,-$3C(a5)
; for (i=0;
moveq #0,d2
bra L219
L210
; GLfloat ndcz = ((GLfloat) z[i] - tz) *
moveq #0,d0
move.w 0(a4,d2.l*2),d0
fmove.l d0,fp1
fsub.s -$1C(a5),fp1
fmul.s -$20(a5),fp1
; GLfloat eyez = -d / (c+ndcz);
fmove.s -$8(a5),fp0
fneg.s fp0
fadd.s -4(a5),fp1
fdiv.x fp1,fp0
; if (eyez < 0.0)
fmove.x fp0,fp1
fcmp.d #$.00000000.00000000,fp1
fboge.b L212
L211
; if (eyez < 0.0) eyez
fneg.s fp0
L212
; f = exp( negDensitySquared * eyez*eyez
fmove.s -$3C(a5),fp1
fmul.x fp0,fp1
fmul.x fp0,fp1
fmove.x fp1,fp0
fmove.d fp0,-(a7)
jsr _exp__r
addq.w #$8,a7
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L214
L213
fmove.s #$.00000000,fp0
bra.b L218
L214
fcmp.s #$.3F800000,fp0
fbole.b L216
L215
fmove.s #$.3F800000,fp0
L216
L217
L218
; g = 1.0F - f;
fmove.s #$.3F800000,fp1
fsub.x fp0,fp1
; rgba[i][RCOMP] = (GLint) (f * rgba[i][
moveq #0,d0
move.b 0(a2,d2.l*4),d0
fmove.l d0,fp2
fmul.x fp0,fp2
fmove.x fp1,fp6
fmul.x fp5,fp6
fadd.x fp6,fp2
fmove.l fp2,d0
move.b d0,0(a2,d2.l*4)
; rgba[i][GCOMP] = (GLint) (f * rgba[i][
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 1(a0),d0
fmove.l d0,fp2
fmul.x fp0,fp2
fmove.x fp1,fp6
fmul.x fp4,fp6
fadd.x fp6,fp2
fmove.l fp2,d0
lea 0(a2,d2.l*4),a0
move.b d0,1(a0)
; rgba[i][BCOMP] = (GLint) (f * rgba[i][
lea 0(a2,d2.l*4),a0
moveq #0,d0
move.b 2(a0),d0
fmove.l d0,fp2
fmul.x fp2,fp0
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.l fp0,d0
lea 0(a2,d2.l*4),a0
move.b d0,2(a0)
addq.l #1,d2
L219
cmp.l d3,d2
blo L210
L220
;
bra.b L222
L221
; gl_problem(ctx, "Bad fog mode in gl_fog_rgba_pixel
move.l #L183,-(a7)
move.l a3,-(a7)
jsr _gl_problem
addq.w #$8,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
L222
; return;
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
L183
dc.b 'Bad fog mode in gl_fog_rgba_pixels',0
SECTION "_gl_fog_ci_pixels:0",CODE
;void gl_fog_ci_pixels( const GLcontext *ctx,
XDEF _gl_fog_ci_pixels
_gl_fog_ci_pixels
L265 EQU -$3C
link a5,#L265
movem.l d2/d3/a2-a4,-(a7)
fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
movem.l $C(a5),d3/a4
move.l $8(a5),a2
move.l $14(a5),a3
L226
; GLfloat c = ctx->ProjectionMatrix[10];
lea $1284(a2),a0
fmove.s $28(a0),fp5
; GLfloat d = ctx->ProjectionMatrix[14];
lea $1284(a2),a0
fmove.s $38(a0),fp4
; GLfloat tz = ctx->Viewport.Tz;
move.l a2,a0
add.l #$E540,a0
fmove.s $2C(a0),fp3
; GLfloat szInv = 1.0F / ctx->Viewport.Sz;
move.l a2,a0
add.l #$E540,a0
fmove.s #$.3F800000,fp2
fdiv.s $20(a0),fp2
; switch (ctx->Fog.Mode)
move.l $2300(a2),d0
cmp.l #$801,d0
beq L251
bgt.b L266
cmp.l #$800,d0
beq L239
bra L263
L266
cmp.l #$2601,d0
beq.b L227
bra L263
;
L227
; GLfloat fogEnd = ctx->Fog.End;
move.l $22F8(a2),-$18(a5)
; GLfloat fogScale = 1.0F / (ctx->Fog.End - ct
fmove.s $22F8(a2),fp0
fsub.s $22F4(a2),fp0
fmove.s #$.3F800000,fp1
fdiv.x fp0,fp1
fmove.s fp1,fp7
; for (i=0;
moveq #0,d2
bra L237
L228
; GLfloat ndcz = ((GLfloat) z[i] - tz) *
moveq #0,d0
move.w 0(a4,d2.l*2),d0
fmove.l d0,fp1
fsub.x fp3,fp1
fmul.x fp2,fp1
; GLfloat eyez = -d / (c+ndcz);
fmove.x fp4,fp0
fneg.s fp0
fadd.x fp5,fp1
fdiv.x fp1,fp0
; if (eyez < 0.0)
fmove.x fp0,fp1
fcmp.d #$.00000000.00000000,fp1
fboge.b L230
L229
; if (eyez < 0.0) eyez
fneg.s fp0
L230
; f = (fogEnd - eyez) * fogScale;
fmove.s -$18(a5),fp1
fsub.x fp0,fp1
fmove.x fp1,fp0
fmul.x fp7,fp0
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L232
L231
fmove.s #$.00000000,fp0
bra.b L236
L232
fcmp.s #$.3F800000,fp0
fbole.b L234
L233
fmove.s #$.3F800000,fp0
L234
L235
L236
; index[i] = (GLuint) ((GLfloat) index[i
fmove.l 0(a3,d2.l*4),fp1
fmove.s #$.3F800000,fp6
fsub.x fp0,fp6
fmove.x fp6,fp0
fmul.s $22FC(a2),fp0
fadd.x fp0,fp1
fmove.l fp1,d0
move.l d0,0(a3,d2.l*4)
addq.l #1,d2
L237
cmp.l d3,d2
blo L228
L238
;
bra L264
L239
; for (i=0;
moveq #0,d2
bra L249
L240
; GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
moveq #0,d0
move.w 0(a4,d2.l*2),d0
fmove.l d0,fp1
fsub.x fp3,fp1
fmul.x fp2,fp1
; GLfloat eyez = -d / (c+ndcz);
fmove.x fp4,fp0
fneg.s fp0
fadd.x fp5,fp1
fdiv.x fp1,fp0
; if (eyez < 0.0)
fmove.x fp0,fp1
fcmp.d #$.00000000.00000000,fp1
fboge.b L242
L241
; if (eyez < 0.0) eyez = -ey
fneg.s fp0
L242
; f = exp( -ctx->Fog.Density * eyez );
fmove.s $22F0(a2),fp1
fneg.s fp1
fmul.x fp0,fp1
fmove.x fp1,fp0
fmove.d fp0,-(a7)
jsr _exp__r
addq.w #$8,a7
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L244
L243
fmove.s #$.00000000,fp0
bra.b L248
L244
fcmp.s #$.3F800000,fp0
fbole.b L246
L245
fmove.s #$.3F800000,fp0
L246
L247
L248
; index[i] = (GLuint) ((GLfloat) index[i] + (1
fmove.l 0(a3,d2.l*4),fp1
fmove.s #$.3F800000,fp6
fsub.x fp0,fp6
fmove.x fp6,fp0
fmul.s $22FC(a2),fp0
fadd.x fp0,fp1
fmove.l fp1,d0
move.l d0,0(a3,d2.l*4)
addq.l #1,d2
L249
cmp.l d3,d2
blo L240
L250
;
bra L264
L251
; GLfloat negDensitySquared = -ctx->Fog.Densit
fmove.s $22F0(a2),fp0
fneg.s fp0
fmove.s fp0,fp7
fmove.x fp7,fp0
fmul.s $22F0(a2),fp0
fmove.s fp0,fp7
; for (i=0;
moveq #0,d2
bra L261
L252
; GLfloat ndcz = ((GLfloat) z[i] - tz) *
moveq #0,d0
move.w 0(a4,d2.l*2),d0
fmove.l d0,fp1
fsub.x fp3,fp1
fmul.x fp2,fp1
; GLfloat eyez = -d / (c+ndcz);
fmove.x fp4,fp0
fneg.s fp0
fadd.x fp5,fp1
fdiv.x fp1,fp0
; if (eyez < 0.0)
fmove.x fp0,fp1
fcmp.d #$.00000000.00000000,fp1
fboge.b L254
L253
; if (eyez < 0.0) eyez
fneg.s fp0
L254
; f = exp( negDensitySquared * eyez*eyez
fmove.x fp7,fp1
fmul.x fp0,fp1
fmul.x fp0,fp1
fmove.x fp1,fp0
fmove.d fp0,-(a7)
jsr _exp__r
addq.w #$8,a7
; f = CLAMP( f, 0.0F, 1.0F );
fcmp.s #$.00000000,fp0
fboge.b L256
L255
fmove.s #$.00000000,fp0
bra.b L260
L256
fcmp.s #$.3F800000,fp0
fbole.b L258
L257
fmove.s #$.3F800000,fp0
L258
L259
L260
; index[i] = (GLuint) ((GLfloat) index[i
fmove.l 0(a3,d2.l*4),fp1
fmove.s #$.3F800000,fp6
fsub.x fp0,fp6
fmove.x fp6,fp0
fmul.s $22FC(a2),fp0
fadd.x fp0,fp1
fmove.l fp1,d0
move.l d0,0(a3,d2.l*4)
addq.l #1,d2
L261
cmp.l d3,d2
blo L252
L262
;
bra.b L264
L263
; gl_problem(ctx, "Bad fog mode in gl_fog_ci_pixels")
move.l #L225,-(a7)
move.l a2,-(a7)
jsr _gl_problem
addq.w #$8,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
L264
; return;
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
L225
dc.b 'Bad fog mode in gl_fog_ci_pixels',0
END